#ifndef GAME_MANAGER_H
#define GAME_MANAGER_H

#include <vector>
#include "..\include\game_state\game_state.h"
#include "..\include\graphics\graphics_renderer.h"
#include "..\include\user_controller.h"

class GameState;

class GameManager
{
  public:
	GameManager();
	~GameManager();

	void update();
	void render();
	
	void setStartState(GameState*);
	void changeState(GameState*);
	void pushState(GameState*);
	void popState();

	bool isRunning();

  private:
	std::vector<GameState*> stateStack_;
	GraphicsRenderer* graphicsRenderer_;
	UserController* userController_;
};

#endif // GAME_MANAGER_H